package com.jiepu.daily.jdbc.day0824;

import oracle.jdbc.OracleDriver;

import java.sql.*;
import java.util.Properties;

/**
 * @Description:
 * @author: xinjie
 * @date: 2020/8/24  15:43
 */
public class JdbcDemo {
	public static void main(String[] args) throws ClassNotFoundException, SQLException {

		/**
		 * 1.注册驱动
		 * 	1).
		 *		Class.forName("oracle.jdbc.driver.OracleDriver");
		 *	推荐使用第一种 class.forname  可实现配置化
		 * 	2).
		 *		Driver driver = new OracleDriver();
		 * 		DriverManager.registerDriver(driver);
		 * 	3).
		 * 		Properties pro = System.getProperties();
		 * 		pro.setProperty("jdbc.drivers", "oracle.");
		 *
		 * 2.获取连接
		 *	意味通信开始，获取一个Connection接口的实现类对象
		 *	两种方式：
		 *		dburl = "jdbc:oracle:thin:@localhost:1521:orcl";
		 *		1.DriverManager.getConnection(url,user,password)
		 *
		 *		String dburl = "jdbc:oracle:thin:@localhost:1521:orcl";
		 * 		Connection conn = DriverManager.getConnection(dburl,"xinjie","yang19990916");
		 * 		System.out.println(conn);+
		 *
		 *		2.Driver.connect
		 *		Properties info = new Properties;
		 *		info.setProperty("user","xinjie");
		 *		info.setProperty("password","yang19990916");
		 *
		 *		driver.connect(dburl,info);
		 *
		 * 3.创建执行SQL命令的对象
		 * 	共有三种：
		 * 		1.	Statement
		 * 			执行同构效率低，异构SQL较高
		 * 		2.  PreparedStatement
		 * 			执行同构SQL很高，异构效率低
		 * 		3.  CallableStatement  用于执行PL/SQL。
		 *
		 * 4.编写并执行 SQL 命令
		 * 		SQL 语句后 不加 分号 ";"
		 * 		执行SQL的三种方法：
		 * 			1.
		 * 			返回值：是否有结果集，只有select 才会有结果集
		 * 			boolean execute(String sql)
		 * 			2.
		 * 			返回值 代表受影响的行数，适用于DML
		 * 			executeUpdate(String sql)
		 * 			3.
		 * 			ResultSet 查询结果的结果集，DML语句
		 *
		 * 			ResultSet exxcuteQuery(String sql)
		 *
		 * 5.解析结果集
		 *
		 * 6.关闭资源，释放连接。
		 */

	// 11.注册
		// 1.
		// 反射机制，触发类的加载。
		Class.forName("oracle.jdbc.driver.OracleDriver");
		/*
		// 2.
		Driver driver = new OracleDriver();
		DriverManager.registerDriver(driver);
		// 3.
		Properties pro = System.getProperties();
		pro.setProperty("jdbc.drivers", "oracle.");
		*/
	// 22. 获取连接
		String dburl = "jdbc:oracle:thin:@localhost:1521:orcl";
		Connection conn = DriverManager.getConnection(dburl,"xinjie","yang19990916");
		System.out.println(conn);

	// 33.创建执行SQL的对象
		Statement statement = conn.createStatement();

	// 44. 编写和执行SQL命令
		String sql = "create table t_jdbc("
				+ "id number primary key,"
				+ "name varchar2(255),"
				+ "age number,"
				+ "gender varchar2(255))";
		// 相当于在
		statement.execute(sql);
		System.out.println("table created!!!");
	// 55.

	// 66. 关闭资源 释放连接。
		//需要关闭的 Connection Statement Praper ，
		if (statement != null){
			statement.close();
		}
		if (conn != null){
			conn.close();
		}
		System.out.println("Relase all!");




	}
}
